/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Cita_View_Grid.java
 *
 * Created on 22/05/2012, 04:20:29 PM
 */
package v;

import c.GridTableController;
import com.lowagie.text.Font;
import core.constructor.constructor;
import java.awt.Color;
import java.util.Date;
import tools.DatosComboBox;
import tools.TextPrompt;

/**
 *
 * @author Usuario
 */
public class Cita_View_Grid extends javax.swing.JPanel {

    private DatosComboBox cbx;
    private constructor c;
    private GridTableController configTable;
    private String sqlSelect;
    private String nombreColumnas;
    private String general = "select cita.id_cita, especialidad.descripcion, "
            + "(medico.nombres || ' ' || medico.apellidos) as nombre_Especialista, "
            + "planilla_horario.fecha_agendada, to_char(hora, 'HH12:MI AM'), "
            + "(paciente.nombres || ' ' || paciente.apellidos) as Nombre_paciente, estado_cita.descripcion "
            + "from medico, estado_cita, especialidad, planilla_horario, cita left join paciente on "
            + "(cita.id_paciente = paciente.id_paciente) "
            + "where cita.estado = estado_cita.id_estado and medico.id_especialidad='%s' "
            + "and medico.id_especialidad = especialidad.id_especialidad and "
            + "medico.id_medico = planilla_horario.id_medico and "
            + "(planilla_horario.fecha_agendada >= '%s') and "
            + "planilla_horario.id_planilla_horario = cita.id_planilla_horario " 
            + " order by id_cita asc;";
//        private String general = "select citas_paciente.id, especialidad.descripcion, "
//                + "(medico.nombres || ' ' || medico.apellidos) as nombre_Especialista, "
//                + "planilla_horario.fecha_agendada, hora, "
//                + "(paciente.nombres || ' ' || paciente.apellidos) as Nombre_paciente, estado_cita.descripcion "
//                + "from medico, estado_cita, especialidad, planilla_horario, cita left join paciente on "
//                + "(cita.id_paciente=paciente.id_paciente), citas_paciente "
//                + "where cita.estado = estado_cita.id_estado and medico.id_especialidad='%s' "
//                + " and citas_paciente.id_cita = cita.id_cita "
//                + "and medico.id_especialidad = especialidad.id_especialidad and "
//                + "medico.id_medico = planilla_horario.id_medico and "
//                + "(planilla_horario.fecha_agendada > current_date or cita.hora > current_time) and "
//                + "planilla_horario.id_planilla_horario = cita.id_planilla_horario and fecha_agendada >= '%s'"
//                + " order by cita.id_cita asc;";

    /**
     * Creates new form Cita_View_Grid
     */
    public Cita_View_Grid(Object... e) {
        initComponents();
        config(e);
        setTable();
        setEstilo();
    }

    private void config(Object... e) {
        if (e.length > 0) {
            c = (constructor) e[0];
        }

        //donde?
        cbx = new DatosComboBox();
        cbxEspecialidad.setModel(new javax.swing.DefaultComboBoxModel(cbx.cbEspecialidad()));
        fechaDesde.setDate(new Date());

        //Asignar Nombre a Columnas Tabla
        setNombreColumnas("Id,Especialidad,Profesional,Fecha,Hora cita,Paciente,Estado,Consultar,Modificar,Cancelar");

        //Configurar tabla BD
        System.setProperty("tabla_bd", "cita");

        /*
         * Configurar Accion Boton Eliminar
         * UPDATE = Cambiar de Estado a Inactivo (0)
         * DELETE = ELiminar de la Tabla el Registro
         */
        System.setProperty("accion_eliminar", "DELETE");

        // Indicar a las 'migas de pan' donde estamos.
        c.setLabelModulo("Citas");
        c.setLabelAccion("Citas Disponibles");
        c.setNavegar("Cita_View_Grid");
    }

    private void setTable() {
        //Asignar SQL para Tabla
        setSqlSelect(String.format(general, cbx.getKeyEspecialidad(cbxEspecialidad),
                fechaDesde.getDate().toString()));
        configTable = new GridTableController(tabla);
        tabla = configTable.setTabla(tabla, getSqlSelect(), getNombreColumnas(), c);
        configTable.setFilter(jSearch);
        //desde aca arriba se llama al metodo de clase o al estatico, y se le pasa el campo y ya!
        tabla.setName("Cita");
    }

    public String getSqlSelect() {
        return sqlSelect;
    }

    public void setSqlSelect(String sqlSelect) {
        this.sqlSelect = sqlSelect;
    }

    public void setNombreColumnas(String nombreColumnas) {
        this.nombreColumnas = nombreColumnas;
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        cbxEspecialidad = new javax.swing.JComboBox();
        jScrollPane1 = new javax.swing.JScrollPane();
        tabla = new org.jdesktop.swingx.JXTable();
        jSearch = new javax.swing.JTextField();
        fechaDesde = new org.jdesktop.swingx.JXDatePicker();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();

        cbxEspecialidad.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        cbxEspecialidad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbxEspecialidadActionPerformed(evt);
            }
        });

        tabla.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane1.setViewportView(tabla);

        jSearch.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jSearchActionPerformed(evt);
            }
        });

        fechaDesde.setFormats("dd-MM-yyyy");
        fechaDesde.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                fechaDesdeActionPerformed(evt);
            }
        });

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLabel1.setText("Filtrar por especialidad:");

        jLabel2.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLabel2.setText("Buscar:");

        jLabel3.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLabel3.setText("Filtrar por fecha:");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 980, Short.MAX_VALUE)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel2)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jSearch, javax.swing.GroupLayout.PREFERRED_SIZE, 158, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jLabel1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(cbxEspecialidad, javax.swing.GroupLayout.PREFERRED_SIZE, 228, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(36, 36, 36)
                        .addComponent(jLabel3)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(fechaDesde, javax.swing.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(fechaDesde, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2)
                    .addComponent(jSearch, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel1)
                    .addComponent(cbxEspecialidad, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel3))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 352, Short.MAX_VALUE)
                .addContainerGap())
        );
    }// </editor-fold>//GEN-END:initComponents

    private void jSearchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jSearchActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jSearchActionPerformed

    private void cbxEspecialidadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbxEspecialidadActionPerformed
        // TODO add your handling code here:
        setTable();
    }//GEN-LAST:event_cbxEspecialidadActionPerformed

    private void fechaDesdeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fechaDesdeActionPerformed
        // TODO add your handling code here:
        setTable();
        System.out.print("responde");
    }//GEN-LAST:event_fechaDesdeActionPerformed
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JComboBox cbxEspecialidad;
    private org.jdesktop.swingx.JXDatePicker fechaDesde;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextField jSearch;
    private org.jdesktop.swingx.JXTable tabla;
    // End of variables declaration//GEN-END:variables

    public String getNombreColumnas() {
        return nombreColumnas;
    }

    private void setEstilo() {
        TextPrompt placeHolder = new TextPrompt("Buscar cita", jSearch);
        placeHolder.setForeground(Color.blue);
        placeHolder.changeAlpha(0.5f);
        placeHolder.changeStyle(Font.BOLD + Font.ITALIC);
        placeHolder.setIcon(new javax.swing.ImageIcon(getClass().getResource("/core/img/search24.gif")));
    }
}
